這次希望整理過數字陣列,希望得到一個去除重複元素的陣列(uniq_arr),這個陣列的長度(uniq_arr_length),再得到一個把剔除數字往後擺的陣列(rearranged)
given_nums1 = [1,1,2]
uniq_arr=[1,2] uniq_arr_length = 2
rearranged = [1,2,1]
given_nums2 = [0,0,1,1,1,2,2,3,3,4]
given_nums1 = [1,1,2]
given_nums2 = [0,0,1,1,1,2,2,3,3,4]
def get_length (arr)
if arr.length == 0
return 'Nothing is given.'
end
uniq_arr = arr.uniq
uniq_arr_long = arr.uniq.length
rearranged = uniq_arr
uniq_arr.each do |num|
show_times = arr.count(num)
if show_times-1 == 0
next
else
rearranged = rearranged + ( [num] * ( show_times - 1 ) )
end
end
p "unique array #{uniq_arr}"
p "unique array length #{uniq_arr_long}"
p "rearranged array #{rearranged}"
rearranged
return rearranged
end
get_length([1,1,2])
"unique array [1, 2]"
"unique array length 2"
"rearranged array [1, 2, 1]"
get_length([0,0,1,1,1,2,2,3,3,4])
"unique array [0, 1, 2, 3, 4]"
"unique array length 5"
"rearranged array [0, 1, 2, 3, 4, 0, 1, 1, 2, 3]"
我先用 if 判斷傳入陣列的長度,空陣列就回傳 'Nothing is given.'
用 uniq 把陣列重複元素剔除,計算長度,再把 uniq 塞入 rearranged
用迴圈去跑 uniq_arr 就可以依照順序抓出存在於 arr 的元素,再去計算這個元素於 arr 中重複幾次
把該元素重複次數 -1 塞到 rearranged (-1 是因為該元素有一個已經被加到前端了)
把整理後的陣列回傳
今天到此為止,有任何問題請在下方留言或透過email、GitHub聯絡我,感謝閱讀
Daily kitty